package com.lh.nk;

import javax.xml.stream.FactoryConfigurationError;

/**
 * @author: linghao
 * @since: 2023/2/7
 *
 * 描述
 * 给你一个大小为 n 的字符串数组 strs ，其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀，返回这个公共前缀
 *
 * 输入：
 * ["abca","abc","abca","abc","abcc"]
 * 返回值：
 * "abc"
 */
public class 最长公共前缀NC55 {

    public static void main(String[] args) {
        String[] str= {"aa","ab"};
        System.out.println(longestCommonPrefix(str));
    }

    //利用二位数组
    public static String longestCommonPrefix (String[] strs) {
        // write code here
        if(strs == null || strs.length == 0)return "";

        int row = strs.length;
        int col = strs[0].length();

        //把第一个单词当做列的第一位
        for(int i=0;i<col;i++){
            char c = strs[0].charAt(i);
            for(int j=1;j<row;j++){   //第一个单词是基准，这里就应该从第二个位置开始比较
                //strs[j].length() == i  表示 strs[j]是最短的字符串了；strs[j].charAt(i) != c 代表从这后面的开始没有公共部分了。
                if(strs[j].length() == i || strs[j].charAt(i) != c){
                    return strs[0].substring(0,i);
                }
            }
        }
        //否则只有一个单词，直接返回
        return strs[0];
    }
}
